import Vue from "vue";
// 这里 import 进来的单文件组件只是一个单纯的配置对象
import ToastComponents from "./Toast.vue";
// 必须以它的配置为基础，生成一个 Vue 子类
const Toast = Vue.extend(ToastComponents);
export const ToastClass = class A {
  constructor(options) {
    this.toast = new Toast({
      propsData: {
        ...options,
      },
    });
    this.toast.$mount();
    this.node = this.toast.$el;
    document.body.appendChild(this.node);
  }
  show() {
    document.body.appendChild(this.node);
  }
  close() {
    this.node.remove();
    this.toast.$destroy();
    this.node = null;
    // 完全销毁此实例，防止内存泄漏
    this.toast.$destroy();
  }
};
export const ToastPlugin = {
  install(Vue) {
    Vue.$Toast = Vue.prototype.$Toast = ToastClass;
  },
};
